package com.edu.object1;

import java.util.Scanner;

public class test02 {
    //案例小总结，实现一个购物车，商品添加，查询，修改数量，结算金额
    /**
     * 1、定义一个商品类，定义好了
     */
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        //千万不能放到死循环当中去，要不然每次循环就会新建个购物车数组，进而把添加上的商品对象覆盖，再查询就成了空指针
        Goods[] shopCar = new Goods[100];
        boolean flag=false;
        while (true){
        System.out.println("请选择你要开始的命令：");
        System.out.println("添加购物车：add");
        System.out.println("查询购物车：query");
        System.out.println("修改购物车：update");
        System.out.println("结算金额：pay");
        System.out.println("结束操作：close");
        //创建一个购物车数组对象,可以存100个商品对象
        //定义一个变量用于接收命令
        String commend=s.next();
        //由于各个分支结果明确，单一，直接使用switch来判断使用的是哪个命令
        switch (commend){
            case "add":
                //进行添加购物的操作
                addShopCar(shopCar,s);
                break;
            case "query":
                //查询操作
                queryShopCar(shopCar);
                break;
            case "update":
                //修改商品数量操作
                updateGoodNum(shopCar,s);
                break;
            case "pay":
                //结算操作
                payShopCar(shopCar);
                break;
            case "close":
                //结束操作
                flag=true;
                break;
            default:
                System.out.println("你输入的操作有误");
                break;
        }
        if(flag){
            break;
        }
    }
    }
    //结算商品总金额操作
    public static void payShopCar(Goods[] shopCar) {
        double sum=0;
        for (int i = 0; i <shopCar.length; i++) {
            Goods g=shopCar[i];
            if(g!=null){
                sum+=(g.price*g.buyNum);
            }else{
                break;
            }
        }
        queryShopCar(shopCar);
        System.out.println("商品总金额为"+sum+"元钱");
    }

    //修改商品数量操作
    public static void updateGoodNum(Goods[] shopCar,Scanner s) {
        while (true){
        System.out.println("请输入你要修改的商品id：");
        int id=s.nextInt();
        Goods g=getGoodById(shopCar,id);//接收一下查到的商品
        if(g!=null){
            System.out.println("请输入您要修改的商品"+g.name+"的数量");
            g.buyNum=s.nextInt();
            System.out.println("修改完成");
            queryShopCar(shopCar);
            break;
        }else{
            System.out.println("对不起，您还未添加该商品到购物车");
        }
    }
    }
    //根据用户id查询到用户商品，便于修改操作
    public static Goods getGoodById(Goods[] shopCar,int id){
        //将商品从购物车数组对象中取出
        for (int i = 0; i < shopCar.length; i++) {
            Goods g=shopCar[i];
            if(g!=null){
                if(g.id==id){
                    return g;
                }else
                    return null;//在所有存在的商品中查找，未查找到
            }
            break;
        }
        return null;//在100个商品对象中查找，未查找到
    }

    //查询购物车商品
    public static void queryShopCar(Goods[] shopCar) {
        System.out.println("-----------您查询的购物车商品如下-------");
        System.out.println("编号\t\t\t"+"商品名称\t\t\t"+"商品价格\t\t\t"+"商品数量");
        for (int i = 0; i < shopCar.length; i++) {
            //创建商品对象接收一下，购物车数组中的数据
            Goods g = shopCar[i];
            if(g!=null){
                System.out.println(g.id+"\t"+g.name+"\t"+g.price+"\t"+g.buyNum);
            }else
                break;
        }
    }

    //添加购物车操作
    public static void addShopCar(Goods[] shopCar, Scanner s) {
        System.out.println("请输入商品编号");
        int id=s.nextInt();
        System.out.println("请输入商品名称");
        String name=s.next();
        System.out.println("请输入商品价格");
        double price=s.nextDouble();
        System.out.println("请输入商品数量");
        int buyNum=s.nextInt();
        //将输入的商品属性，赋值给购物车对象，即添加购物车
        Goods g = new Goods();
        g.id=id;
        g.name=name;
        g.price=price;
        g.buyNum=buyNum;
        //将赋值好的商品对象，添加购物车
        for (int i = 0; i < shopCar.length; i++) {
            if(shopCar[i]==null){
                shopCar[i]=g;
                break;
            }
        }
        System.out.println("您的商品"+g.name+"已添加购物车成功");
    }

}
